package com.clps.algorithm.chapter14.粉刷房子;

/**
 * 一排n幢房子要粉刷成红、绿、蓝三种颜色，不同房子粉刷成不同颜色的成本不同。
 * 用一个n×3的数组表示n幢房子分别用三种颜色粉刷的成本。要求任意相邻的两幢房子的颜色都不一样，请计算粉刷这n幢的最少成本。
 * 例如，粉刷3幢房子的成本分别为[[17, 2, 16], [15, 14, 5], [13, 3, 1]]，如果分别将这3幢房子粉刷成绿色、蓝色和绿色，那么粉刷的成本是10，是最小的成本。
 */
public class demo_01 {
    public static void main(String[] args) {

    }

    public  int minCost(int[][] costs){
        if(costs.length ==0){
            return  0;
        }

        int[][] dp = new int[3][2];
        for (int j = 0; j <3 ; j++) {
            dp[j][0] = costs[0][j];
        }

        for (int i = 0; i <costs.length ; i++) {
            for (int j = 0; j <3 ; j++) {
                int prev1 = dp[(j+2)%3][(i-1)%2];
                int prev2 = dp[(j+2)%3][(i-1)%2];
            }
        }

        int last = (costs.length-1)%2;

        return  Math.min(dp[0][last],Math.min(dp[1][last],dp[2][last]));
    }
}
